package stream流;

import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
 /*stream流中的distinct方法去重：
  * 	1.当以基本数据类型创建stream流时，distinct可以去重；
  * 	2.当以自定义数据类型创建stream流时，要在自定义类中重写hashCode()和equals（）方法
  * 	  来实现对象内容相同就去重。
*/	

/*stream流中的sorted方法排序：
 * 		1.当以基本数据类型创建stream流时，sorted可以排升序；
 * 		2.当以自定义类型创建stream流时，因为一个自定义对象可能有多个属性，这时调用sorted它并不知道根据哪个属性进行排序，
 * 			所以会报错。此时要想实现排序有两种方法：
 * 				1.在自定义类中实现Comparable接口并重写compara方法。
 * 				2.在sorted方法中实现Comparator匿名内部类。
 */
public class Ementyy {
	public static void main(String[] args)
	{
		//1.基本数据类型组成的集合
		Set<Integer> s=new HashSet<Integer>();
		Collections.addAll(s,444,222,555,111,333,333);
		System.out.println(s);					//可以去重复
		s.stream().distinct().sorted().forEach(ss->System.out.println(ss));
		
		//2.自定义类组成的集合
//		Set<Student> stu=new HashSet<Student>();
//		stu.add(new Student("张三",18));
//		stu.add(new Student("李四",17));
//		stu.add(new Student("张三",18));
//		stu.add(new Student("王五",19));
//		stu.add(new Student("李明",20));
//		System.out.println(stu);
//		stu.stream().distinct().sorted(new Comparator<Student>() {
//			@Override
//			public int compare(Student o1, Student o2) {
//				// TODO Auto-generated method stub
//				return o1.getAge()-o2.getAge();
//			}
//			
//		}).forEach(s->System.out.println(s));
	}
}
